package com.hereiam.modelo;

// Generated Mar 27, 2014 8:27:18 PM by Hibernate Tools 3.4.0.CR1

import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

/**
 * Usuario generated by hbm2java
 */
@Entity
@Table(name = "usuario", catalog = "androidproject", uniqueConstraints = @UniqueConstraint(columnNames = "nick"))
public class Usuario implements java.io.Serializable {

	private int idUsuario;
	private Pais pais;
	private String nick;
	private String ciudadUsuario;
	private Estadousuario estadousuario;
	private Set<Sesionchat> sesionchats = new HashSet<Sesionchat>(0);
	private Set<Comentario> comentarios = new HashSet<Comentario>(0);
	private Set<Comentario> comentarios_1 = new HashSet<Comentario>(0);
	private Set<Idiomausuario> idiomausuarios = new HashSet<Idiomausuario>(0);
	private Set<Mensajechat> mensajechats = new HashSet<Mensajechat>(0);

	public Usuario() {
	}

	public Usuario(int idUsuario, String nick) {
		this.idUsuario = idUsuario;
		this.nick = nick;
	}

	public Usuario(int idUsuario, Pais pais, String nick, String ciudadUsuario,
			Estadousuario estadousuario, Set<Sesionchat> sesionchats,
			Set<Comentario> comentarios, Set<Comentario> comentarios_1,
			Set<Idiomausuario> idiomausuarios, Set<Mensajechat> mensajechats) {
		this.idUsuario = idUsuario;
		this.pais = pais;
		this.nick = nick;
		this.ciudadUsuario = ciudadUsuario;
		this.estadousuario = estadousuario;
		this.sesionchats = sesionchats;
		this.comentarios = comentarios;
		this.comentarios_1 = comentarios_1;
		this.idiomausuarios = idiomausuarios;
		this.mensajechats = mensajechats;
	}

	@Id
	@Column(name = "id_usuario", unique = true, nullable = false)
	public int getIdUsuario() {
		return this.idUsuario;
	}

	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "pais_usuario")
	public Pais getPais() {
		return this.pais;
	}

	public void setPais(Pais pais) {
		this.pais = pais;
	}

	@Column(name = "nick", unique = true, nullable = false, length = 250)
	public String getNick() {
		return this.nick;
	}

	public void setNick(String nick) {
		this.nick = nick;
	}

	@Column(name = "ciudad_usuario", length = 30)
	public String getCiudadUsuario() {
		return this.ciudadUsuario;
	}

	public void setCiudadUsuario(String ciudadUsuario) {
		this.ciudadUsuario = ciudadUsuario;
	}

	@OneToOne(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Estadousuario getEstadousuario() {
		return this.estadousuario;
	}

	public void setEstadousuario(Estadousuario estadousuario) {
		this.estadousuario = estadousuario;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "usuariochat", catalog = "androidproject", joinColumns = { @JoinColumn(name = "id_usuario", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "id_chat", nullable = false, updatable = false) })
	public Set<Sesionchat> getSesionchats() {
		return this.sesionchats;
	}

	public void setSesionchats(Set<Sesionchat> sesionchats) {
		this.sesionchats = sesionchats;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<Comentario> getComentarios() {
		return this.comentarios;
	}

	public void setComentarios(Set<Comentario> comentarios) {
		this.comentarios = comentarios;
	}

	@ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name = "votaciones", catalog = "androidproject", joinColumns = { @JoinColumn(name = "id_usuario", nullable = false, updatable = false) }, inverseJoinColumns = { @JoinColumn(name = "id_comentario", nullable = false, updatable = false) })
	public Set<Comentario> getComentarios_1() {
		return this.comentarios_1;
	}

	public void setComentarios_1(Set<Comentario> comentarios_1) {
		this.comentarios_1 = comentarios_1;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<Idiomausuario> getIdiomausuarios() {
		return this.idiomausuarios;
	}

	public void setIdiomausuarios(Set<Idiomausuario> idiomausuarios) {
		this.idiomausuarios = idiomausuarios;
	}

	@OneToMany(fetch = FetchType.LAZY, mappedBy = "usuario")
	public Set<Mensajechat> getMensajechats() {
		return this.mensajechats;
	}

	public void setMensajechats(Set<Mensajechat> mensajechats) {
		this.mensajechats = mensajechats;
	}

}
